﻿using Seg.Entidades;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Seg.Datos
{
    public class SistemaDatos
    {
        BD_SEGEntities context = new BD_SEGEntities();

        public int Insertar(Sistema entidad)
        {
            entidad.CodigoSistema = GenerarCodigo();
            context.Sistema.Add(entidad);
            context.SaveChanges();
            return 1;
        }


        public int Actualizar(Sistema entidad)
        {
           var objUpd= context.Sistema.Where(x => x.CodigoSistema == entidad.CodigoSistema).FirstOrDefault();

           objUpd.Descripcion = entidad.Descripcion;
           objUpd.Nombre = entidad.Nombre;
           objUpd.Prefijo = entidad.Prefijo;
           objUpd.Anulado = entidad.Anulado;

           context.SaveChanges();
            return 1;
        }
        public int Eliminar(int id  )
        {
            var objUpd = context.Sistema.Where(x => x.CodigoSistema == id).FirstOrDefault();
            objUpd.Anulado = true;
            var r = context.SaveChanges();
            return r;
        }
        public List<Sistema> Listar(string nombre, string prefijo, string anulado)
        {
            var datos = new List<Seg.Entidades.Sistema>();

            if (anulado == "0")
            {
                datos = context.Sistema.Where(x =>
                    ((x.Nombre.Contains(nombre) || nombre == "")
                    && (x.Prefijo.Contains(prefijo) || prefijo == ""))
                ).ToList();
            }
            else
            {
                var anul = anulado == "A" ? false : true;
                datos = context.Sistema.Where(x =>
                    ((x.Nombre.Contains(nombre) || nombre == "")
                    && (x.Prefijo.Contains(prefijo) || prefijo == "")
                    && (x.Anulado == anul))
                ).ToList();
            }
            return datos;
        }
        int GenerarCodigo()
        {
            var actual= context.Sistema.Count();
            return actual+1;
        }
        public Sistema ObtenerSistema(decimal id)
        {
            var datos = context.Sistema.Where(x => x.CodigoSistema == id).FirstOrDefault();
            return datos;
        }

        public List<Sistema> ListarSistemas(int idSist)
        {
            var datos = new List<Seg.Entidades.Sistema>();

            datos = context.Sistema.Where(x => (x.CodigoSistema == idSist || idSist==0) && x.Anulado == false).ToList();
            
            return datos;
        }
        public int validarPrefijo(Sistema entidad)
        {
            var datos = context.Sistema.Where(x =>
                (x.Prefijo == entidad.Prefijo)).Count();
            return datos;
        }
        public Sistema obtenerXPrefijo(string Prefijo)
        {
            var datos = context.Sistema.Where(x =>
                (x.Prefijo == Prefijo)
                && (x.Anulado == false)).FirstOrDefault();
            return datos;
        }
        public List<Sistema> SistemaAutoCompletado(string descripcion)
        {
            var datos = new List<Seg.Entidades.Sistema>();

            datos = context.Sistema.Where(x =>
                ((x.Nombre.Contains(descripcion) || x.Descripcion.Contains(descripcion))
                && (x.Anulado == false))
                ).ToList();
            return datos;
        }
    }
}
